﻿//using System;
//using System.Collections.Generic;
//using System.Linq.Expressions;

//namespace DBUtil.Builders
//{
//    /// <summary>
//    /// 插入构建结构
//    /// </summary>
//    /// <typeparam name="T"></typeparam>
//    public interface IInsertBuilder<T> where T : class, new()
//    {
//        /// <summary>
//        /// 忽略指定的属性,如: builder.Ignore(model=>model.CreateTime)
//        /// </summary>
//        /// <param name="expression"></param>
//        /// <returns></returns>
//        IInsertBuilder<T> Ignore(Expression<Func<T, object>> expression);

//        /// <summary>
//        /// 忽略所有的属性
//        /// </summary>
//        /// <returns></returns>
//        IInsertBuilder<T> IgnoreAll();

//        /// <summary>
//        /// 指定操作的表名
//        /// </summary>
//        /// <param name="tableName"></param>
//        /// <returns></returns>
//        IInsertBuilder<T> UseTable(string tableName);

//        /// <summary>
//        /// 使用模型数据
//        /// </summary>
//        /// <param name="models"></param>
//        /// <returns></returns>
//        IInsertBuilder<T> UseModelData(params T[] models);

//        /// <summary>
//        /// 指定插入的属性
//        /// </summary>
//        /// <param name="expression"></param>
//        /// <returns></returns>
//        IInsertBuilder<T> Value(Expression<Func<T, object>> expression);

//        /// <summary>
//        /// 指定插入的属性(将属性的值直接拼接到Sql语句中)
//        /// </summary>
//        /// <param name="expression"></param>
//        /// <returns></returns>
//        IInsertBuilder<T> ValueRaw(Expression<Func<T, object>> expression);

//        /// <summary>
//        /// 插入数据并获取生成的Id
//        /// </summary>
//        /// <returns></returns>
//        long InsertAndGetId();

//        /// <summary>
//        /// 插入数据并获取生成的Id集合
//        /// </summary>
//        /// <returns></returns>
//        List<long> InsertAndGetIds();

//        /// <summary>
//        /// 插入数据并根据查询构建器重新查询数据集合
//        /// </summary>
//        /// <param name="selectBuilder"></param>
//        /// <returns></returns>
//        List<T> InsertAndGetModels(Func<ISelectBuilder<T>, ISelectBuilder<T>> selectBuilder = null);

//        /// <summary>
//        /// 插入数据并根据查询构建器重新查询数据集合
//        /// </summary>
//        /// <param name="selectBuilder"></param>
//        /// <returns></returns>
//        T InsertAndGetModel(Func<ISelectBuilder<T>, ISelectBuilder<T>> selectBuilder = null);

//        /// <summary>
//        /// 插入数据并返回受影响的行数
//        /// </summary>
//        /// <returns></returns>
//        int InsertAffectRows();
//    }
//}
